package com.tedu.api.io;

import org.junit.jupiter.api.Test;
import sun.util.locale.provider.JRELocaleProviderAdapter;

import java.io.*;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，要求用户【从控制台】输入文件名--->假设： a.txt
 *      然后，针对文件进行读写操作
 *      用户可以在【控制台】输入一行行的文本内容，要求：写入 a.txt文件中
 *      判断，如果用户输入‘退出/exit’，程序结束
 *      a.txt直接出线  API项目下  保存对应文本的内容
 *  要求：1.标准流--结合异常处理
 *       2.输出流--->输入流【读】  单元测试   testNote()
 */
public class Note {
    public static void main(String[] args) {
        FileOutputStream fos=null;
        OutputStreamWriter osw=null;
        BufferedWriter bw=null;
        PrintWriter pw=null;
        //try/catch/finally适配IO 捕获异常--关闭流【高级流】
        //1.从控制台输入：  a.txt  文本
        try {
            Scanner input=new Scanner(System.in);
            System.out.println("请输入文件名:");
            String text= input.nextLine();//获取一行文本
            //System.out.println(text);  打桩
            //2.流---写
            fos=new FileOutputStream(text);
            osw=new OutputStreamWriter(fos,"UTF8");
            bw=new BufferedWriter(osw);
            pw=new PrintWriter(bw);
            //3.往假设 a.txt写入文件--一直写入，直到写出文件”退出/exit“
            //3.1定义字符串变量--赋值为null，接受用户每次输入”文本内容“
            String line1= null;
            //3.1.1【补充：考虑用户体验】提示内容
            System.out.println("请开始输入内容：");
            while(true){
                String line = input.nextLine(); //从控制台获取一行文本
                //3.3判断条件---判断line是否等于退出或者exit
                if(line.equals("退出")||line.equals("exit")){
                    break;//跳出方法体
                }
                //3.4PW字符输出流--写出
                System.out.println("拜拜~~，请查看API文件夹生成文件！！");
                pw.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } finally {
            //3.5【用户体验】拜拜~

            try {
                //3.6关闭高级六
                if(pw!=null)
                    pw.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //3.2 一直写入
    }
}

